package com.ruoyi.system.service;
import com.ruoyi.system.domain.bo.CommitInfo;
import com.ruoyi.system.domain.bo.FileBo;
import com.ruoyi.system.domain.vo.FirmwareVo;
import com.ruoyi.system.domain.bo.FirmwareBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.ResponseEntity;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;
import java.util.List;

/**
 * 固件管理Service接口
 *
 * @author whc
 * @date 2024-05-04
 */
public interface IFirmwareService {

    List<CommitInfo> getFileCommits(String filePath);

    /**
     * 查询固件管理
     */
    FirmwareVo queryById(Long id);

/**
     * 上传固件
     */
    boolean uploadFirmware(FileBo fileBo) throws Exception;
/**
     * 下载固件
     */
    ResponseEntity<FileSystemResource> getFile(String path) throws Exception;
    ResponseEntity<FileSystemResource> getFile(String path, String commitId) throws Exception;

    /**
     * 查询固件管理列表
     */
    TableDataInfo<FirmwareVo> queryPageList(FirmwareBo bo, PageQuery pageQuery);

    /**
     * 查询固件管理列表
     */
    List<FirmwareVo> queryList(FirmwareBo bo);

    /**
     * 新增固件管理
     */
    Boolean insertByBo(FirmwareBo bo);

    /**
     * 修改固件管理
     */
    Boolean updateByBo(FirmwareBo bo);

    /**
     * 校验并批量删除固件管理信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
